Stata绘制饼形图的进阶用法
本文作者:智淼,中南财经政法大学统计与数学学院
本文编辑:王思雨
技术总编:李婷婷
Stata and Python 数据分析
爬虫俱乐部Stata基础课程、Stata进阶课程和Python课程可在小鹅通平台查看,欢迎大家多多支持订阅!如需了解详情,可以通过课程链接(https://appbqiqpzi66527.h5.xiaoeknow.com/homepage/10)或课程二维码进行访问哦~《Stata绘图系列——饼形图绘制》一文已经介绍了Stata中饼形图的基本绘制,今天我们将进一步介绍饼状图的进阶用法,使用到的命令主要有graph pie
和pieplot
。同样的,我们先构造一组描述支出分布的月度数据,时间跨度为1月至6月,记录了被调查者在图书、食宿、交通、社交和通讯上的月度支出,构造方式如下。
clear all
set seed 1234567
set obs 1000
gen id = mod(_n,300)
bysort id: gen int month = _n+3*uniform()
gen int 图书= uniform()*400
gen int 食宿= uniform()*1200
gen int 交通= uniform()*200
gen int 社交= uniform()*500
gen int 通讯= uniform()*300
drop if uniform()<.3 //随机删去30%的样本
如果我们想凸显饼形图的某一部分,可以使用选项pie中的explode
或explode(size)
。其中,size可以设置扇形突出的程度,默认值为3.8。
graph pie 图书 食宿 交通 社交 通讯, pie(1, explode) plabel(_all name, size(*1.5) color(white)) legend(off) //默认size= 3.8
graph pie 图书 食宿 交通 社交 通讯, pie(1, explode(7)) plabel(_all name, size(*1.5) color(white)) legend(off) note("注:size=7") //size= 7
在Stata中,饼形图绘制的默认规则为从12点钟方向开始,顺时针依次排列扇形,扇形排列顺序和变量顺序一致。如下命令中,从12点钟方向开始(即90°处),按照顺时针方向,依次排列变量图书、食宿、交通、社交、通讯(见下图)。
graph pie 图书 食宿 交通 社交 通讯, plabel(_all name, size(*1.2) color(white)) pie(1, explode(7)) legend(off) note("注:默认将扇形按顺时针排序")
我们可以按照逆时针顺序排列扇形,使用到的选项为noclockwise
。
graph pie 图书 食宿 交通 社交 通讯, plabel(_all name, size(*1.2) color(white)) pie(1, explode(7)) legend(off) noclockwise note("注:将扇形按逆时针排序")
除了按照指定变量出现的顺序进行排序,还可以根据每块扇形的面积进行排序,使用到的选项为sort
和sort descending
。其中,sort
表示按照面积升序排列,sort descending
表示按照面积降序排列。
graph pie 图书 食宿 交通 社交 通讯,plabel(_all name, size(*1.2) color(white)) sort note("注:按面积递增排序") //升序
graph pie 图书 食宿 交通 社交 通讯,plabel(_all name, size(*1.2) color(white)) sort descending note("注:按面积递减排序") //降序
除此以外,还能使用选项angle0(#)
指定第一块扇形出现的位置,默认是12点钟方向,即angle0(90)
。下面我们对比默认设置angle0(90)和angle0(180)的区别。
graph pie 图书 食宿 交通 社交 通讯,plabel(_all name, size(*1.2) color(white)) pie(1, explode) //默认
graph pie 图书 食宿 交通 社交 通讯,plabel(_all name, size(*1.2) color(white)) pie(1, explode) angle0(180)
使用选项by()
可以将饼图进行分类绘制。这里我们将学生消费支出按时间分类绘制,每个月的支出都会绘制一个饼形图,并且将这六个月的饼图并列显示。
graph pie 图书 食宿 交通 社交 通讯, plabel(_all percent, color(white) size(*0.8)) by(month) legend(row(1))
在绘制饼形图时,Stata默认忽略缺失值,只统计有数值的部分。使用选项missing
可以设置在饼形图中显示缺失值。这里我们使用系统提供的数据库auto.dta进行演示。
sysuse auto,clear
misstable sum rep78 //统计变量rep78的缺失值
graph pie,over(rep78) missing legend(title(Sample distribution))
当使用饼形图描述指定变量取值出现的频率时,使用命令pieplot
更为简便,使用前需要先进行安装。
pieplot
具体有两种使用方法:
(1)pieplot yvar。绘制一个饼形图,描述变量yvar的不同值出现的频率。
sysuse auto, clear
pieplot rep78
(2)pieplot yvar xvar。绘制一组饼形图,描绘按照变量xvar分组后,变量yvar的不同值出现的频率。
pieplot rep78 foreign
如果想在扇形上标注对应的百分比或总数,使用到的选项分别为percent
和sum
。
pieplot rep78 foreign, percent
pieplot rep78 foreign, sum
选项plabelsubopts(size(#))可以改变标注数字的大小,plabelsubopts(pie(#, color( )))则可以修改对应扇形的颜色。
pieplot rep78 foreign, sum plabelsubopts(size(*2)) pie(1, color(red*2)) pie(2, color(red)) pie(3,color(red*0.7)) pie(4, color(red*0.5)) pie(5, color(red*0.3)) legend(row(1))
需要注意的是,pieplot只等同于graph pie
, over(varname)
,并不能替代graph pie varlist
和graph pie varname
。另一个缺陷是pieplot不能修改图例中扇形的标签。
以上是Stata中饼形图绘制的介绍了。希望对大家有帮助~
END
重磅福利!为了更好地服务各位同学的研究,爬虫俱乐部将在小鹅通平台上持续提供金融研究所需要的各类指标,包括上市公司十大股东、股价崩盘、投资效率、融资约束、企业避税、分析师跟踪、净资产收益率、资产回报率、国际四大审计、托宾Q值、第一大股东持股比例、账面市值比、沪深A股上市公司研究常用控制变量等一系列深加工数据,基于各交易所信息披露的数据利用Stata在实现数据实时更新的同时还将不断上线更多的数据指标。我们以最前沿的数据处理技术、最好的服务质量、最大的诚意望能助力大家的研究工作!相关数据链接,请大家访问:(https://appbqiqpzi66527.h5.xiaoeknow.com/homepage/10)或扫描二维码:
最后,我们为大家揭秘雪球网(https://xueqiu.com/)最新所展示的沪深证券和港股关注人数增长Top10。
对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
往期推文推荐 Python标准库--logging模块
盲区探索——Stata的读写极限
Camelot提取PDF表格:一页多表、多页一表
Stata绘图系列——条形图绘制
Python常见内置函数(一)Stata绘图系列——饼形图绘制【爬虫实战】深交所服务业年报数据“挂羊头卖狗肉”?
Python与excel交互--xlsxwriter模块cnmapsearch——离公司最近的快餐店在哪
Python中的异常处理 Python交互式数据可视化——酷炫的Altair库 hk系列命令(3)—— hktrade hk系列命令(2)—— hkar hk系列命令(1)—— hkstock 超好用的字符串方法 基于Python的假设检验实现Stata与MySQL交互--基础操作关于我们
微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
武汉字符串数据科技有限公司一直为广大用户提供数据采集和分析的服务工作,如果您有这方面的需求,请发邮件到statatraining@163.com,或者直接联系我们的数据中台总工程司海涛先生,电话:18203668525,wechat: super4ht。海涛先生曾长期在香港大学从事研究工作,现为知名985大学的博士生,爬虫俱乐部网络爬虫技术和正则表达式的课程负责人。
此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。
投稿邮箱:statatraining@163.com投稿要求:1)必须原创,禁止抄袭;2)必须准确,详细,有例子,有截图;注意事项:1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。